Python NotImplemented 常量
全部标签 我刚刚意识到Java中的枚举常量似乎包含相同类型的所有枚举常量。例如下面的代码是合法的:enumState{enable,disable,deleted;}classTest{publicstaticvoidmain(String[]args){for(States:State.enable.disable.values()){System.out.println(s);}}}当我看到输出是:enabledisabledeletedenable常量包含disable常量,而后者又包含所有State枚举常量,这不是违反直觉甚至不合逻辑吗??这种语言设计背后可能的考虑是什么?
我刚刚意识到Java中的枚举常量似乎包含相同类型的所有枚举常量。例如下面的代码是合法的:enumState{enable,disable,deleted;}classTest{publicstaticvoidmain(String[]args){for(States:State.enable.disable.values()){System.out.println(s);}}}当我看到输出是:enabledisabledeletedenable常量包含disable常量,而后者又包含所有State枚举常量,这不是违反直觉甚至不合逻辑吗??这种语言设计背后可能的考虑是什么?
假设我有这样的类(class):classApplicationDefs{publicstaticfinalStringconfigOption1="someoption";publicstaticfinalStringconfigOption2="someotheroption";publicstaticfinalStringconfigOption3="yetanotheroption";}我的应用程序中的许多其他类都在使用这些选项。现在,我想单独更改其中一个选项并仅部署已编译的类。但是,如果这些字段内联在消费者类中,这将变得不可能,对吧?是否有任何选项可以禁用编译时常量的内联?
假设我有这样的类(class):classApplicationDefs{publicstaticfinalStringconfigOption1="someoption";publicstaticfinalStringconfigOption2="someotheroption";publicstaticfinalStringconfigOption3="yetanotheroption";}我的应用程序中的许多其他类都在使用这些选项。现在,我想单独更改其中一个选项并仅部署已编译的类。但是,如果这些字段内联在消费者类中,这将变得不可能,对吧?是否有任何选项可以禁用编译时常量的内联?
我已阅读该问题和答案:WhatisthebestwaytoimplementconstantsinJava?并提出了一个决定,即枚举是实现一组常量的更好方法。另外,我在Sun网站上阅读了如何将行为添加到枚举的示例(请参阅前面提到的帖子中的链接)。所以在枚举中添加带有String键的构造函数来保存一堆String值是没有问题的。这里唯一的问题是我们需要添加“.nameOfProperty”来访问字符串值。因此,在代码中的任何地方,我们都需要通过它的名称(EnumName.MY_CONSTANT)来处理常量值,而是通过它的名称(Enum.MY_CONSTANT.propertyName)。
我已阅读该问题和答案:WhatisthebestwaytoimplementconstantsinJava?并提出了一个决定,即枚举是实现一组常量的更好方法。另外,我在Sun网站上阅读了如何将行为添加到枚举的示例(请参阅前面提到的帖子中的链接)。所以在枚举中添加带有String键的构造函数来保存一堆String值是没有问题的。这里唯一的问题是我们需要添加“.nameOfProperty”来访问字符串值。因此,在代码中的任何地方,我们都需要通过它的名称(EnumName.MY_CONSTANT)来处理常量值,而是通过它的名称(Enum.MY_CONSTANT.propertyName)。
我有个同事发誓//inasingleton"Constants"classpublicstaticfinalStringEMPTY_STRING="";在整个项目中可用的常量类中。这样,我们就可以写出类似if(Constants.EMPTY_STRING.equals(otherString)){...}而不是if("".equals(otherString)){...}我说是不值得——它不会在堆/堆栈/字符串池中节省任何空间,丑滥用常量类。谁是白痴? 最佳答案 String字面量默认是interned,所以无论你在代码中引用多少次
我有个同事发誓//inasingleton"Constants"classpublicstaticfinalStringEMPTY_STRING="";在整个项目中可用的常量类中。这样,我们就可以写出类似if(Constants.EMPTY_STRING.equals(otherString)){...}而不是if("".equals(otherString)){...}我说是不值得——它不会在堆/堆栈/字符串池中节省任何空间,丑滥用常量类。谁是白痴? 最佳答案 String字面量默认是interned,所以无论你在代码中引用多少次
我有一个内部类,它声明一个常量,并希望使用@value注释在封闭的顶级类的Javadoc中显示它的值。例如:/***{@value#FOO_CONS}//thisdisplayswell*{@value#BAR_CONS}//thisdoesnotwork(checkedinthelatestEclipse)*{@valueBar#BAR_CONS}//thisdoesnotwork,either*/publicFoo{publicstaticfinalintFOO_CONS=1;staticclassBar{publicstaticfinalintBAR_CONS=42;}}任何想法
我有一个内部类,它声明一个常量,并希望使用@value注释在封闭的顶级类的Javadoc中显示它的值。例如:/***{@value#FOO_CONS}//thisdisplayswell*{@value#BAR_CONS}//thisdoesnotwork(checkedinthelatestEclipse)*{@valueBar#BAR_CONS}//thisdoesnotwork,either*/publicFoo{publicstaticfinalintFOO_CONS=1;staticclassBar{publicstaticfinalintBAR_CONS=42;}}任何想法